1. Field of the Invention
This invention relates generally to data processing systems and, more particularly, to object oriented programming systems and processes.
2. Description of the Related Art
In a computer system having a distributed processing environment, individual computers are interconnected and form nodes of a database network, such as a local area network (LAN). Some of the nodes may comprise network servers that support end-user applications at each node. Such servers are supported by processes that provide services, such as transaction control and security checking. Execution of applications and server functions is initiated at the nodes, but frequently the programming logic providing the services is spread across different nodes, or address spaces. To ease the programming task of the application programmer developer, it is important that support services be provided in a transparent manner, such that the application developer and end-user do not realize what components or processes are actually providing support.
Support services may be performed by one or more server processes executing in the operating environment of a node. These support services frequently require data relating to the requesting process, the service provider, service parameters, and the like. Such data may not comprise server process parameters or program arguments, but are referred to as implicit data. In an object oriented programming (OOP) environment, the server processes can be implemented as server process objects. That is, the operating system of the server supports an object oriented programming environment in which an OOP object representing the server process manages other server process objects that perform the server support functions.
OOP techniques encapsulate, or bind together, data and the methods that operate on them. This encapsulation permits program development to more closely model real-world systems for problem solution and breaks up program development efforts into smaller, more manageable pieces. OOP programs are developed around object classes that have attributes, also called data values, and methods, also called functions. Although OOP techniques have done much to improve program development efficiency, such techniques still require a great degree of code generation on the part of developers and limit program reuse.
OOP frameworks have been developed in an effort to further reduce program development costs. A framework is a set of OOP classes that embodies a predetermined set of attributes and methods for providing a common group of behaviors. An application program developer utilizes the framework and builds upon it, starting with the classes, attributes, and methods defined by the framework designer and adding subclasses and attributes and modifying methods depending on the problem to be solved. Such changes to the framework are typically referred to as framework extensions, and are made possible by the OOP notions of inheritance and polymorphism. The challenge confronting framework developers, then, is to define a set of classes and methods that will best support the desired problem solution and will accept the most likely framework extensions. Thus, the designer of a framework must carefully assess what framework users will most likely need in the way of classes and attributes.
As noted above with respect to distributed programming environments, it is important that server services be provided in a transparent manner, such that the application developer and end-user do not realize what components are actually providing support and do not have to be concerned with such details. In a local-only environment this is not complicated, because implicit data required by services to accomplish their task is in the same address space as the services to be provided, and thus is readily available. In a distributed programming environment, the data is spread out across the network, and it is much more difficult to provide these services in a transparent manner. The programming logic providing these services may be spread out over the network nodes, and the data needed by these services also may be spread around the network. Moreover, it can be difficult to ascertain what implicit data is needed by underlying services before they can pass data between themselves.
From the discussion above, it should be apparent that there is a need for a server process framework that permits program developers to more quickly develop and more easily maintain server process programs and exchange implicit data among such processes. The present invention fulfills this need.
In accordance with the present invention, a reusable object oriented (OO) server framework in an object oriented programming system of a network node defines a Server Process category of objects, the objects of which perform service processes for the network and exchange implicit data with remote processes of the network, and also define an Implicit Data Handler Registry (IDHR) class of objects that receive registration information from Provider objects of the Server Process category. Each Provider object of a Server Process registers with the IDHR of its local node if the service process produces implicit data for use by remote processes that request service, such that the IDHR object requests implicit data from a registered Provider in response to requests to network remote processes, receives implicit data from remote processes and passes the data to registered Provider objects, requests implicit data from registered Provider objects for reply to requests to remote processes, and provides Provider objects with implicit reply data received back from remote nodes from whom service was requested. In this way, implicit data handling is controlled through registration with the IDHR objects and is transparent to the Server Process objects.
The framework includes classes (such as the Provider class) for which it is anticipated extension subclassing with new attributes and methods will occur. A server program developer can customize the extension classes to meet the needs of users and create all user interfaces with the server program, permitting the server developer to more quickly complete program development and more easily perform software maintenance. It is expected that the program developer will provide the enduser interface, which establishes a means for the server end-user to communicate with the server program to receive, process, and report data. Thus, the framework of the present invention frees the program developer to concentrate on server process program features, which can easily be implemented by extending the OO classes and methods of the OO framework. The framework thereby provides a base from which a variety of server processes can be quickly and efficiently produced.
The framework includes object oriented classes that specify object data attributes and methods. The server process program developer who adopts the framework of the invention and extends it is free to add specialized service objects consistent with those specified in the framework to provide a unique suite of functions and operations, resulting in the production of a server process that can then be utilized by an end user. A single server object of the framework provides a data object location for managing the objects that will carry out operations of the server process. Using OOP principles, the framework adopter can add server process features not present in the framework to support functions and processes desired by customers in a particular market niche. In this way, the framework adopter maximizes the exploitation of program commonality and the reuse of programming efforts, thereby reducing program development time and software maintenance costs.
Other features and advantages of the present invention should be apparent from the following description of the preferred embodiment, which illustrates, by way of example, the principles of the invention.